Skip to content

fix: Resolve inline groups in no-base-entries fallback#88

Merged
romtsn merged 2 commits intomasterfrom
rz/fix/no-base-entries
Mar 10, 2026
Merged

fix: Resolve inline groups in no-base-entries fallback#88
romtsn merged 2 commits intomasterfrom
rz/fix/no-base-entries

Conversation

@romtsn
Copy link
Copy Markdown
Member

@romtsn romtsn commented Mar 9, 2026

Summary

  • When a frame has no line number and there are no base entries (endline==0), detect if the first range group forms an inline chain (multiple entries sharing the same startline/endline) and resolve each entry with its proper original line instead of emitting all entries with line 0
  • This matches retrace's allRangesForLine(0, true) behavior, which picks the first range containing line 0 and returns all entries in that group
  • Applied to both ProguardCache and ProguardMapper

Fixes CI in getsentry/symbolicator#1896 where the regression has been discovered

Test plan

  • Existing tests pass
  • Verify with mapping files that contain inline groups without base entries

🤖 Generated with Claude Code

When a frame has no line number and there are no base entries
(endline==0), detect if the first range group forms an inline chain
(multiple entries sharing the same startline/endline) and resolve
each entry with its proper original line instead of emitting all
entries with line 0.

This matches retrace's `allRangesForLine(0, true)` which picks the
first range containing line 0 and returns all entries in that group.

Applied to both ProguardCache and ProguardMapper.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Copy link
Copy Markdown
Member

@Dav1dde Dav1dde left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mind adding a regression test, showcasing the change?

Verifies that inline chains (multiple entries sharing the same
startline/endline) with no base entries resolve each entry with
its proper original line instead of collapsing all to line 0.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@romtsn
Copy link
Copy Markdown
Member Author

romtsn commented Mar 10, 2026

@Dav1dde added in 5ee398d

@romtsn romtsn merged commit 74ba936 into master Mar 10, 2026
9 checks passed
@romtsn romtsn deleted the rz/fix/no-base-entries branch March 10, 2026 10:41
romtsn added a commit to getsentry/symbolicator that referenced this pull request Mar 10, 2026
…#1896)

## Summary
- Bumps `proguard` crate from 5.9.0 to 5.10.0
- Filters out compiler-synthesized frames (e.g. lambda bridges) from
remapped stacktraces, matching R8 retrace behavior
- Handles `StackFrame::line()` now returning `Option<usize>` instead of
`usize`
- Fixes incomplete test mapping for outline callsite position entries
- Updates integration test snapshots for new filename/abs_path fields

Currently blocked by getsentry/rust-proguard#88
which needs to be shipped in a patch release and bumped here to make the
CI pass


## Test plan
- [x] Unit tests updated and passing
- [x] Integration test snapshots updated
- [ ] Verify CI passes

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants